The following broad topic areas will be covered by Exam 1 which will be 50 minutes long. Refer to the Learning Outcomes listed on the individual course topic pages for more details about what you should know in a topic area.
The exam will have short answer style questions, and longer questions where you will carry out a process or design activity similar to ones that you did as exercises or term project activities. There will not necessarily be questions on every topic described below on your exam.
Information Sheet
You will be able to bring one 8.5" x 11" inch sheet of paper to the exam with whatever information you would like. This can contain information on both sides and be either handwritten (preferred) or word processed (avoid merely copying/pasting).
The purpose of the exam is for you to demonstrate your understanding of the course topics that are in the scope of the exam. Your instructor knows the material that is in the course resources and the lectures done in class. Verbatim copying of that material would only demonstrate that you can memorize or accurately copy words. You will not be demonstrating your understanding of the topic and you will receive a low score on the question.
If you decide to use an information sheet, you should make sure to write the information on these software engineering topics in your own words. If your instructor asked you to explain a topic in person, it is doubtful that you would give a rote reply directly from the lecture or the course topic readings or videos. This is the information that you should place on an information sheet. Additionally, many of the questions will ask for you to explain why something is important, or exactly how it is carried out. This goes well beyond the information in the lecture or resource materials.
Design
Domain analysis: its purpose, notations and guidelines for models, and creating one from a system description.
Basic object-oriented concepts: describing, relating to code, and fixing violations.
Object-oriented design: explain the design principles-single responsibility, dependency inversion/injection, coupling, cohesion, information expert, Law of Demeter, Pure Fabrication, Open/Close, Controller; identify when the principles are not followed and suggest improvements.
Software architecture: why is it important, what does it provide for you; Angular App architecture and three tier architecture [Presentation(frontend), Application(backend), Data] and corresponding layer concepts; basics of REST/Angular and HTTP protocol in web applications.
Describe in full the sequence of steps in a rountrip execution through the architectural layers: including the components involved in handling a request from the frontend through backend/persistence and return of a response.
Unit Testing: basic concepts and characteristics; its relation to other types of testing; CuT and Seam.
Process
Software process: why is it important, what does it provide for you, OpenUP process methodology and the focus for each phase.
Requirements: gathering requirements and technology exploration through features, epics, and user and spike stories, format for stories.
Sprint planning: workflow and mechanics for sprint planning, backlog refinement and estimation.
Version control concepts.
Acceptance testing: purpose, format for acceptance criteria, acceptance test plan.
CI/CD and code coverage.
Teamwork and Communications
Team formation: stages of team development, characteristics of highly effective teams, common strategies for resolving conflicts within a team.
User stories as a communications technique between Product owner and development team.